package com.ruoyi.user.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.check.CheckEmptyUtil;
import com.ruoyi.user.domain.User;
import com.ruoyi.user.mapper.UserMapper;
import com.ruoyi.user.service.IUserService;
import com.ruoyi.user.vo.DeleteUserLabeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 客户管理Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-10
 */
@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 查询客户管理
     *
     * @param id 客户管理主键
     * @return 客户管理
     */
    @Override
    public User selectUserById(Long id) {
        return userMapper.selectUserById(id);
    }

    /**
     * 查询客户管理列表
     *
     * @param user 客户管理
     * @return 客户管理
     */
    @Override
    public List<User> selectUserList(User user) {
        return userMapper.selectUserList(user);
    }

    /**
     * 新增客户管理
     *
     * @param user 客户管理
     * @return 结果
     */
    @Override
    public int insertUser(User user) {
        user.setCreateTime(DateUtils.getNowDate());
        return userMapper.insertUser(user);
    }

    /**
     * 修改客户管理
     *
     * @param user 客户管理
     * @return 结果
     */
    @Override
    public int updateUser(User user) {
        if (!CheckEmptyUtil.isEmpty(user.getUserLabel())) {
            User user1 = userMapper.selectUserById(user.getId());
            if (CheckEmptyUtil.isEmpty(user1.getUserLabel())) {
                user.setUserLabel(user.getUserLabel());
            } else {
                user.setUserLabel(user1.getUserLabel() + "," + user.getUserLabel());
            }
        }
        user.setUpdateTime(DateUtils.getNowDate());
        return userMapper.updateUser(user);
    }

    /**
     * 批量删除客户管理
     *
     * @param ids 需要删除的客户管理主键
     * @return 结果
     */
    @Override
    public int deleteUserByIds(Long[] ids) {
        return userMapper.deleteUserByIds(ids);
    }

    /**
     * 删除客户管理信息
     *
     * @param id 客户管理主键
     * @return 结果
     */
    @Override
    public int deleteUserById(Long id) {
        return userMapper.deleteUserById(id);
    }

    @Override
    public Integer deleteUserLabel(DeleteUserLabeVo deleteUserLabeVo) {
        User user = userMapper.selectUserById(deleteUserLabeVo.getId());
        String userLab = removeItemFromServiceItem(user.getUserLabel(), deleteUserLabeVo.getUserLabel());
        user.setUserLabel(userLab);
       return userMapper.updateUser(user);
    }


    public String removeItemFromServiceItem(String serviceItem, String itemIdStr) {
        // 如果字符串中只有一个数字，且等于要删除的数字
        if (serviceItem.equals(itemIdStr)) {
            return "";
        }

        // 如果要删除的数字后面有逗号（包括位于开头和中间的情况）
        if (serviceItem.startsWith(itemIdStr + ",")) {
            // 如果要删除的数字位于开头
            if (serviceItem.length() == itemIdStr.length() + 1) {
                // 只有一个数字和逗号，删除后变为空字符串
                return "";
            } else {
                // 删除数字及其后面的逗号
                return serviceItem.substring(itemIdStr.length() + 1);
            }
        } else if (serviceItem.contains("," + itemIdStr + ",")) {
            // 如果要删除的数字位于中间
            int startIndex = serviceItem.indexOf("," + itemIdStr + ",");
            return serviceItem.substring(0, startIndex) + "," + serviceItem.substring(startIndex + itemIdStr.length() + 2);
        } else if (serviceItem.endsWith("," + itemIdStr)) {
            // 如果要删除的数字位于末尾，且前面有逗号
            return serviceItem.substring(0, serviceItem.length() - itemIdStr.length() - 1);
        } else if (serviceItem.endsWith(itemIdStr) && !serviceItem.endsWith("," + itemIdStr)) {
            // 如果要删除的数字位于末尾，且后面没有逗号
            return serviceItem.substring(0, serviceItem.length() - itemIdStr.length());
        }

        // 如果要删除的数字不存在于字符串中，返回原字符串
        return serviceItem;
    }

}
